Carsten Jahn:
Der Anfang des Kurses (s. letzte Ausgabe) beschäftigte sich damit,
die MUI-Includes und einen Beispiel-Quelltext überhaupt mit MaxonC++
in Einklang zu bringen. Weil der Compiler kein Äquivalent zu den
"tagcalls&qout; von SAS-C hat, habe ich empfohlen, Funktionen wie
MUI_NewObject einfach auszukommentieren (MUI_NewObjectA geht ja).
Die Lösung ist ziemlich einfach, ich weiß allerdings nicht, ob es inzwischen eine bessere (mitgelieferte) gibt.
Hier meine Lösung in ANSI-C:#includeDer Trick besteht nur darin, die Parameter von Stack ("Tag tag1, ...") in einen "TagItem *" zu verwandeln, und der passenden Funktion zu übergeben. Danach muss man das entstandene Objectfile nur noch bei Bedarf dazulinken."#include #include /**********************************************/ /* Stub functions to be used in applications. */ /* A call to one function invokes linkage of */ /* all functions ! */ /**********************************************/ Object *MUI_NewObjectA (char *classname,struct TagItem *tags); Object *MUI_MakeObjectA (LONG type,ULONG *params); LONG MUI_RequestA (APTR app,APTR win,LONGBITS flags, char *title,char *gadgets,char *format, APTR params); APTR MUI_AllocAslRequest (unsigned long reqType, struct TagItem *tagList); BOOL MUI_AslRequest (APTR requester, struct TagItem *tagList); #pragma amicall(MUIMasterBase,0x1e,MUI_NewObjectA(a0,a1)) #pragma amicall(MUIMasterBase,0x2a,MUI_RequestA(d0,d1,d2,a0,a1,a2,a3)) #pragma amicall(MUIMasterBase,0x30,MUI_AllocAslRequest(d0,a0)) #pragma amicall(MUIMasterBase,0x36,MUI_AslRequest(a0,a1)) #pragma amicall(MUIMasterBase,0x78,MUI_MakeObjectA(d0,a0)) Object *MUI_NewObject(char *classname, Tag tag1, ...) { return(MUI_NewObjectA(classname, (struct TagItem *) &tag1)); } Object *MUI_MakeObject(LONG type, ULONG arg1, ...) { return(MUI_MakeObjectA(type, &arg1)); } LONG MUI_Request(APTR app,APTR win,LONGBITS flags,char *title, char *gadgets,char *format, APTR arg1, ...) { return(MUI_RequestA(app, win, flags, title, gadgets, format, &arg1)); } APTR MUI_AllocAslRequestTags(unsigned long reqType, Tag tag1, ...) { return(MUI_AllocAslRequest(reqType, (struct TagItem *) &tag1)); } BOOL MUI_AslRequestTags(APTR requester, Tag tag1, ...) { return(MUI_AslRequest(requester, (struct TagItem *) &tag1)); }
Der Quelltext und die Objektdatei sind innerhalb des Binärarchivs verfügbar. Letztere gehört ins Libs-Verzeichnis des Compilers.
![]() |
Inhaltsverzeichnis | ![]() |
©`98Der AmZeiger |